﻿#define _CRT_SECURE_NO_WARNINGS 1

//反转整个数字
class Solution
{
public:
    bool isPalindrome(int x)
    {
        if (x < 0)
        {
            return false;
        }
        string s1;
        while (x)
        {
            int num = x % 10;
            x /= 10;
            s1.insert(0, 1, num + '0');
        }
        int begin = 0;
        int end = s1.size() - 1;
        while (begin < end)
        {
            if (s1[begin] != s1[end])
            {
                return false;
            }
            begin++;
            end--;
        }
        return true;
    }
};

//反转数字的一半
class Solution {
public:
    bool isPalindrome(int x)
    {
        //-123不是回文数
        //当x的最后一位是0，那么第一位只能是0才能满足回文数的条件，该数字只能是0
        if (x < 0 || (x % 10 == 0 && x != 0))
        {
            return false;
        }

        //反转数字的一半
        int ReverseNum = 0;
        while (x > ReverseNum)
        {
            ReverseNum = ReverseNum * 10 + x % 10;
            x /= 10;
        }

        //当数字的长度是奇数时，要去除中位数
        //如：x = 123 ReverseNum = 1234
        return x == ReverseNum || x == ReverseNum / 10;
    }
};

